

#include "stm32f10x.h"
#include "IOCfg.h"
#include "DxInput_Key.h"



void Key_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;

    RCC_APB2PeriphClockCmd(APB2Periph_KEY, ENABLE);

    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;

    GPIO_InitStruct.GPIO_Pin  = GPIO_PIN_KEY_0;
    GPIO_Init(GPIO_GROUP_KEY_0, &GPIO_InitStruct);

    GPIO_InitStruct.GPIO_Pin  = GPIO_PIN_KEY_1;
    GPIO_Init(GPIO_GROUP_KEY_1, &GPIO_InitStruct);
    
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD;
    GPIO_InitStruct.GPIO_Pin  = GPIO_PIN_KEY_UP;
    GPIO_Init(GPIO_GROUP_KEY_UP, &GPIO_InitStruct);
}

int KeyDet(int KeyType)
{
    int press = 0;
    
    switch(KeyType)
    {
    case KEY_1:
        press = GPIO_ReadInputDataBit(GPIO_GROUP_KEY_0, GPIO_PIN_KEY_0);
        press = !press;
        break;
    
    case KEY_2:
        press = GPIO_ReadInputDataBit(GPIO_GROUP_KEY_1, GPIO_PIN_KEY_1);
        press = !press;
        break;
    
    case KEY_3:
        press = GPIO_ReadInputDataBit(GPIO_GROUP_KEY_UP, GPIO_PIN_KEY_UP);
        break;
    }
    
    return press;
}

int Key_Scan(void)
{
    int KeyType = 0;

    if(KeyDet(KEY_1))
    {
        KeyType = KEY_1;
    }
    if(KeyDet(KEY_2))
    {
        KeyType = KEY_2;
    }
    if(KeyDet(KEY_3))
    {
        KeyType = KEY_3;
    }
    
    return KeyType;
}





